// 分冶法計算陣列總和
public static int Sum(int[] arr)
{
// 基本情況:如果陣列只有一個元素,直接返回該元素的值
if (arr.Length == 1)
return arr[0];
// 否則,將陣列分為兩半
int mid = arr.Length / 2;
int[] leftHalf = new int[mid];
int[] rightHalf = new int[arr.Length - mid];
// 將元素分到左右兩半
for (int i = 0; i < mid; i++)
leftHalf[i] = arr[i];
for (int i = mid; i < arr.Length; i++)
rightHalf[i - mid] = arr[i];
// 遞迴計算左右兩半的總和,然後合併
int leftSum = Sum(leftHalf);
int rightSum = Sum(rightHalf);
return leftSum + rightSum;
}
static void Main(string[] args)
{
int[] arr = { 1, 2, 3, 4, 5 };
int sum = Sum(arr);
Console.WriteLine("陣列總和:" + sum);
}
static int Factorial(int n)
{
// 基本情況:階層的基本情況是 0! = 1
if (n == 0)
return 1;
// 遞迴關係:n! = n * (n-1)!
return n * Factorial(n - 1);
}
static void Main(string[] args)
{
int n = 5;
int result = Factorial(n);
Console.WriteLine($"{n} 的階層是 {result}");
}
期望挑戰30天持續更新成功 ~ DAY21